# 内置函数
# 查看使用的内置函数
import builtins
print(dir(builtins))
# 暂时只看到的内置函数

print('\n'*3)
print('map内置函数使用')
lst = [1, 2, 3, 4]
print(f'首先申明lst:{lst},id:{id(lst)} ')
print('申明函数funa')
def funa(a):
    return a * 3

mp = map(funa, lst)
print(f'执行 mp = map(funa, lst)后,此时mp的值{mp},类型:{type(mp)},id:{id(mp)}')
lst1 = list(mp)
print(f'执行 lst1 = list(mp)后,此时lst1的值{lst1},类型:{type(lst1)},id:{id(lst1)}')
print('【这个map好像和java的map不太一样】')
lst2 = list(map(lambda a: a*3, lst))
print(f'用【lambda】表达式 lst2 = list(map(lambda a: a*3, lst)) 此时lst2的值{lst2},类型:{type(lst2)},id:{id(lst2)}')
print('总结:【map】 就是将list中的一个一个元素取出 放到方法中做计算')

print('\n'*3)
print('reduce 内置函数使用')
print(f'首先申明lst:{lst},id:{id(lst)} ')
from functools import reduce
print(f'reduce不是内置函数 要使用就要引入模块 from functools import reduce')
redu = reduce(lambda a, b: a + b, lst)
print(f'用【lambda】表达式 redu = reduce(lambda a, b: a + b, lst) 此时redu的值{redu},类型:{type(redu)},id:{id(redu)}')

print('\n'*3)
print('filter 内置函数使用')
print(f'首先申明lst:{lst},id:{id(lst)} ')
ft = filter(lambda a: a % 2 == 0, lst)
print(f'用【lambda】表达式 ft = filter(lambda a: a % 2 == 0, lst) 此时ft的值{ft},类型:{type(ft)},id:{id(ft)}')
lst3 = list(ft)
print(f'执行 lst3 = list(ft)后,此时lst3的值{lst3},类型:{type(lst3)},id:{id(lst3)}')
